/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.objetos;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jun
 */
public class UsuarioMetodos {
     private Usuario usuario = new Usuario();
    
    private String mensagem = "";
    private List listaUsuarios = new ArrayList();
    private String filtro = "";
    
    /**
     *
     * Metodo Autenticar
     * busca usuario e senha no banco
     * para verificar autenticidade do usuario
    */
    
    public void autenticar() {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.usuario WHERE upper(username) like upper('"+usuario.getUsername()+"')";
            ResultSet rs = con.executa(query);
            if (!rs.next()) {
                mensagem = "ERRO_LOGIN";
            }else{
                Usuario u = new Usuario();
                u.setSenha(rs.getString("senha"));
                usuario.setEmail(rs.getString("email"));
                if(u.getSenha().equals(usuario.getSenha())){
                    mensagem ="OK";
                }else{
                    mensagem ="ERRO_SENHA";
                }
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }

    
    public void autenticarAdmin() {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.usuario WHERE upper(username) like upper('"+usuario.getUsername()+"')";
            ResultSet rs = con.executa(query);
            if (!rs.next()) {
                mensagem = "ERRO_LOGIN";
            }else{
                Usuario u = new Usuario();
                u.setSenha(rs.getString("senha"));
                if(u.getSenha().equals(usuario.getSenha())){
                    mensagem ="OK";
                }else{
                    mensagem ="ERRO_SENHA";
                }
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Cadastrar usuario
     * Cadastra novo usuario no banco
    */
    
    
    public void cadastrarUsuario() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "INSERT INTO bars.usuario "
            +"VALUES('" + usuario.getUsername() + "','" + usuario.getSenha() + "','"
                    + usuario.getEmail() +"');";
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    
    /**
     *
     * Metodo Altera senha
     * altera senha do admin
    */
     public void alteraSenha() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "UPDATE bars.usuario "
            +"SET senha = '" + usuario.getSenha() + "'"
                    + "WHERE upper(username) like upper('"+usuario.getUsername()+"');";
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    /**
     *
     * Metodo Buscar Usuario
     * Pega Usuario do banco
     * de acordo com o filtro
     * feito na sql
    */
    
    public void buscarUsuario() {
        Conexao con = new Conexao();
        try {
            
            con.inicia();
            String query = "SELECT * FROM bars.usuario WHERE upper(username) like upper('"+filtro+"%') ORDER BY username";
            ResultSet rs = con.executa(query);
            listaUsuarios.clear();
            while (rs.next()) {
                Usuario u = new Usuario();
                u.setIdUser(Long.toString(rs.getLong("iduser")));
                u.setUsername(rs.getString("username"));
                if(!u.getUsername().equals("admin"))
                listaUsuarios.add(u);
            }
            
            rs.close();
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
            System.out.println(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    
    
    /**
     *
     * Metodo Remover Usuario
     * Remove usuario existente no banco
    */
    
    public void removerUsuario() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "DELETE FROM bars.usuario"
                    +" WHERE iduser = "+usuario.getIdUser();
            
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    /**
     *
     * Metodo Altera Dados
     * alterar os dados do usuario
    */
    
    public void alteraDados() {
        Conexao con = new Conexao();
        try {
            con.inicia();
            String query = "UPDATE bars.usuario "
            +"SET email = '" + usuario.getEmail() + "'"
                    + "WHERE upper(username) like upper('"+usuario.getUsername()+"');";
            con.atualiza(query);
        } catch (Exception e) {
            this.setMensagem(e.getMessage());
        } finally {
            try {
                con.encerra();
            } catch (SQLException closeE) {
                this.setMensagem(closeE.getMessage());
            }
        }
    }
    public List getListaUsuarios() {
        return listaUsuarios;
    }

    public void setListaUsuarios(List listaUsuarios) {
        this.listaUsuarios = listaUsuarios;
    }
    public String getFiltro() {
        return filtro;
    }

    public void setFiltro(String filtro) {
        this.filtro = filtro;
    }

    public String getMensagem() {
        return mensagem;
    }

    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
}
